package one.stand.service;

import one.stand.model.OrdersModel;
import one.stand.model.ResultModel;
import one.stand.request.*;
import one.stand.response.UserLevelResponse;

import java.util.Map;

/**
 * 分销管理
 * @author Administrator
 */
public interface DistributionService {

    /**
     * 分销管理-数据统计
     *
     * @param request
     * @return
     */
    ResultModel<Map<String, Object>> getRoyaltyData(RoyaltyRecordRequest request);

    /**
     * 设置分销金额比例
     *
     * @param request
     * @return
     */
    ResultModel<Boolean> companyRoyalty(CompanyRoyaltyRequest request);

    /**
     * 设置分销金额比例
     *
     * @param request
     * @return
     */
    ResultModel<Boolean> insertCompanyRoyalty(CompanyRoyaltyRequest request);

    /**
     * 分销订单列表
     *
     * @param request
     * @return
     */
    ResultModel<Map<String, Object>> selectRoyaltyOrderList(OrdersRequest request);

    /**
     * 分销订单详情
     *
     * @param request
     * @return
     */
    ResultModel<OrdersModel> getRoyaltyOrderInfo(OrdersRequest request);

    /**
     * 佣金排行列表
     *
     * @param request
     * @return
     */
    ResultModel<Map<String, Object>> selectRoyaltyRankList(RoyaltyRecordRequest request);

    /**
     * 企业到账记录列表
     *
     * @param request
     * @return
     */
    ResultModel<Map<String, Object>> selectCompanyTransferList(CompanyTransferRequest request);

    /**
     * 更改企业到账记录结算状态
     *
     * @param request
     * @return
     */
    ResultModel<Boolean> updateCompanyTransferState(CompanyTransferRequest request);

    /**
     * 更改佣金列表结算状态
     * @return
     */
    ResultModel<Boolean> updateRoyaltyRecordState(RoyaltyRecordRequest request);

    /**
     * 查询公司分销员列表 （3.2版本迭代）
     * @return
     */
    ResultModel<Map<String, Object>> selectUserLevelList(UserLevelRequest request);

    /**
     * 得到公司分销员信息 （3.2版本迭代）
     * @return
     */
    ResultModel<UserLevelResponse> getUserLevelInfo(UserLevelRequest request);

    /**
     * 修改公司分销员状态 （3.2版本迭代）
     * @return
     */
    ResultModel<Boolean> updateUserLevelState(UserLevelRequest request);
}
